home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
c
/
thandlr.exe
/
TDEMO.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1993-02-21
|
15KB
|
607 lines
/*-----------------------------------------------------------------------*/
/* filename - tdemo.cpp */
/* */
/* function(s) */
/* test module for the THandler class */
/* */
/* */
/* author - Michael Newton */
/*-----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
/* */
/* TDEMO.CPP */
/* */
/* THandler - Version 1.01 */
/* Copyright (C) 1992, 1993 Michael Newton */
/* All Rights Reserved. */
/* */
/*-----------------------------------------------------------------------*/
// Define Turbo Vision classes used ***************************************
#define Uses_TApplication
#define Uses_TButton
#define Uses_TCheckBoxes
#define Uses_TDeskTop
#define Uses_TDialog
#define Uses_TDisplay
#define Uses_TEvent
#define Uses_TGroup
#define Uses_TKeys
#define Uses_TMenu
#define Uses_TMenuBar
#define Uses_TMenuItem
#define Uses_TObject
#define Uses_TPalette
#define Uses_TProgram
#define Uses_TRect
#define Uses_TScreen
#define Uses_TStatusDef
#define Uses_TStatusItem
#define Uses_TStatusLine
#define Uses_TStaticText
#define Uses_TSItem
#define Uses_TSubMenu
#define Uses_TView
#define Uses_TWindow
#define Uses_MsgBox
#define Uses_fpstream
#define Uses_ipstream
#define Uses_opstream
#include <tv.h>
// CRTL header files ******************************************************
#if !defined __STDLIB_H
#include <stdlib.h>
#endif
#if !defined __STDIO_H
#include <stdio.h>
#endif
#if !defined __STRING_H
#include <string.h>
#endif
#if !defined __STRSTREAM_H
#include <strstrea.h>
#endif
#if !defined __FSTREAM_H
#include <fstream.h>
#endif
#if !defined __IOMANIP_H
#include <iomanip.h>
#endif
#if !defined __DOS_H
#include <dos.h>
#endif
#if !defined __DIR_H
#include <dir.h>
#endif
#if !defined __ALLOC_H
#include <alloc.h>
#endif
// Non-CRTL header files **************************************************
#if !defined __THANDLER_HPP
#include "thandler.hpp"
#endif
// Command constants ******************************************************
const cmTests = 1000,
cmDriveA = 1001,
cmDriveB = 1002,
cmLpt1 = 1003,
cmAux = 1004,
cmToggle = 1005,
cmAbout = 1006,
cmMode = 1007,
hcNone = hcNoContext;
// Non-member function declarations ***************************************
void exitfunc(void);
// TMenuItem **************************************************************
TMenuItem& operator +(TMenuItem& item1, TMenuItem& item2)
{
TMenuItem *p = &item1;
while(p->next != NULL)
p = p->next;
p->next = &item2;
return item1;
}
// TDemoDialog ************************************************************
class TDemoDialog : public TDialog
{
public:
TDemoDialog(const TRect& bounds, const char *aTitle) :
TDialog(bounds, aTitle),
TWindowInit(TDemoDialog::initFrame){};
virtual void handleEvent(TEvent& event);
};
void TDemoDialog::handleEvent(TEvent& event)
{
TDialog::handleEvent(event);
switch(event.what)
{
case evCommand:
switch(event.message.command)
{
case cmDriveA: // Our commands
case cmDriveB:
case cmLpt1:
case cmAux:
if((state & sfModal) != 0)
{
endModal(event.message.command);
clearEvent(event);
}
break;
}
break;
}
}
// THandlerDemo ***********************************************************
// Color palette
#define cpC \
"\x09\x17\x18\x1F\x0E\x04\x0F\x10\x17\x0E" \
"\x09\x1A\x17\x1C\x1E\x37\x3F\x0E\x0C\x13" \
"\x30\x3C\x00\x78\x70\x0E\x0E\x13\x70\x40" \
"\x1E\x78\x70\x0E\x6E\x4E\x70\x70\x7E\x7E" \
"\x30\x3E\x3F\x37\x3B\x78\x70\x7E\x7E\x03" \
"\x4F\x7E\x5E\x55\x0B\x3E\x03\x4F\x0E\x07" \
"\x0F\x00\x00"
// Black and white palette
#define cpB \
"\x70\x70\x78\x7F\x07\x07\x0F\x07\x0F\x07" \
"\x70\x70\x07\x70\x00\x07\x0F\x07\x70\x70" \
"\x07\x70\x00\x70\x7F\x7F\x70\x07\x70\x07" \
"\x00\x70\x7F\x7F\x70\x07\x70\x70\x7F\x7F" \
"\x07\x0F\x0F\x78\x0F\x78\x07\x0F\x0F\x0F" \
"\x70\x0F\x07\x70\x70\x70\x07\x70\x0F\x07" \
"\x07\x00\x00"
// Monochrome palette
#define cpM \
"\x70\x07\x07\x0F\x70\x70\x70\x07\x0F\x07" \
"\x70\x70\x07\x70\x00\x07\x0F\x07\x70\x70" \
"\x07\x70\x00\x70\x70\x70\x07\x07\x70\x07" \
"\x00\x70\x70\x70\x07\x07\x70\x70\x70\x0F" \
"\x07\x07\x0F\x70\x0F\x70\x07\x0F\x0F\x07" \
"\x70\x07\x07\x70\x07\x07\x07\x70\x0F\x07" \
"\x07\x00\x00"
// Option flags for toggles dialog
const ofSystem = 1;
const ofSounds = 2;
class THandlerDemo : public TApplication
{
public:
THandlerDemo();
virtual void shutDown();
virtual TPalette& getPalette() const;
private:
void handleEvent(TEvent& Event);
static TDeskTop *initDeskTop(TRect r);
static TMenuBar *initMenuBar(TRect r);
static TStatusLine *initStatusLine(TRect r);
ushort toggleData; // Toggles dialog data
Boolean systemCalls; // True = use system calls
THandler *newHandler; // Pointer to error handler object
ushort testDevices(); // Device test dialog
void toggleDialog(); // Toggles dialog
void aboutDialog(); // About dialog
void toggleVideo(); // Toggle video mode
};
THandlerDemo::THandlerDemo() :
TProgInit(initStatusLine, initMenuBar, initDeskTop)
{
// Create the THandler object with sounds on
newHandler = new THandler(True);
// Initialize toggles dialog data
toggleData = ofSounds;
systemCalls = False;
// Draw the desktop
setState(sfExposed, True);
redraw();
// Show "About" box
TEvent event;
event.what = evCommand;
event.message.command = cmAbout;
putEvent(event);
}
void THandlerDemo::shutDown()
{
if(newHandler != 0)
delete newHandler;
newHandler = 0;
TProgram::shutDown();
}
TDeskTop *THandlerDemo::initDeskTop(TRect r)
{
r.a.y++;
r.b.y--;
TProgram::application->setState(sfExposed, False);
return new TDeskTop(r);
}
TPalette& THandlerDemo::getPalette() const
{
static TPalette c(cpC, sizeof(cpC) - 1);
static TPalette b(cpB, sizeof(cpB) - 1);
static TPalette m(cpM, sizeof(cpM) - 1);
static TPalette *palettes[] = {&c, &b, &m};
return *(palettes[appPalette]);
}
void THandlerDemo::handleEvent(TEvent& event)
{
TApplication::handleEvent(event);
if(event.what == evCommand)
{
switch(event.message.command)
{
// Call testDevices until user selects Cancel
case cmTests:
while(testDevices() != cmCancel);
break;
case cmToggle:
toggleDialog();
break;
case cmAbout:
aboutDialog();
break;
case cmMode:
toggleVideo();
break;
default:
return;
}
clearEvent(event);
}
}